//package com.hspedu.newData.dmsxl.回溯.排列;
//
//import java.util.ArrayList;
//import java.util.Arrays;
//import java.util.LinkedList;
//import java.util.List;
//
///**
// * @Author: yh
// * @description:
// * @CreateTime: 2025-05-19
// * @Version: 1.0
// */
//
//// 回溯主要就是根据树来判断的
//// todo 如何判断同一层或者同一支
//public class LC47全排列Ⅱ {
//
//    List<List<Integer>> list = new ArrayList<>();
//    List<Integer> path = new LinkedList<>();
//
//    boolean[] used;
//
//    public List<List<Integer>> permuteUnique(int[] nums) {
//
//        int len = nums.length;
//        used = new boolean[len];
//        Arrays.sort(nums);
//        backtracking(nums);
//        return list;
//    }
//
//    public void backtracking(int[] nums){
//
//        if (path.size() == nums.length){
//            list.add(new ArrayList<>(path));
//            return;
//        }
//
//        for (int i = 0; i < nums.length; i++) {
//
//            if (used[i] || (i>0 && nums[i] == nums[i - 1] && used[i - 1] == false)){
//                continue;
//            }
//            used[i] = true;
//            path.add(nums[i]);
//            backtracking(nums);
//            path.removeLast();
//            used[i] = false;
//        }
//
//    }
//}
